package cn.dev.mybatis.handler.parse;

import cn.dev.mybatis.annotation.Delete;
import cn.dev.mybatis.annotation.Insert;
import cn.dev.mybatis.annotation.Select;
import cn.dev.mybatis.annotation.Update;
import cn.dev.mybatis.bean.SqlObject;
import cn.dev.mybatis.handler.SqlParser;

import java.lang.reflect.Method;

public class SqlParseContext {
    private SqlParser sqlParser;

    public SqlObject parse(Method method, Object[] args) {
        return sqlParser.parse(method, args);
    }

    public void setSqlParser(Method method) {
        if (method.isAnnotationPresent(Select.class)) {
            this.sqlParser = new SelectSqlParser();
            return;
        }
        if (method.isAnnotationPresent(Insert.class)) {
            this.sqlParser = new InsertSqlParser();
            return;
        }
        if (method.isAnnotationPresent(Update.class)) {
            this.sqlParser = new UpdateSqlParser();
            return;
        }
        if (method.isAnnotationPresent(Delete.class)) {
            this.sqlParser = new DeleteSqlParser();
        }
    }
}
